package drds.plus.executor.command_handler;

import drds.plus.executor.ExecuteContext;
import drds.plus.sql_process.abstract_syntax_tree.execute_plan.ExecutePlan;

/**
 * <pre>
 * 用来进行具体的，某一个Executor的，构造方法.
 * 如果需要从执行节点层复写存储执行的过程，可以对这个接口进行修改。
 * 比如mysql需要将原来的更新逻辑做合并。exception update setLimitValue a = 1 where id = 1;
 * 在传递中，使用的方式是一个updateNode,带一个QueryNode
 * 这种查询模式，无法简单的直接被转换为一个update chars,而只能转变为一个update id in.和一个select* from tab where id =1 这样的查询效率太低。
 * 因此，可以直接从updateNode这里，就将updateNode和selectNode在这个地方直接变成sql去执行。而不走到cursor层合并s能够简化查询编码。
 *
 * </pre>
 */
public interface CommandHandlerFactory {

    CommandHandler getCommandHandler(ExecuteContext executeContext, ExecutePlan executePlan);
}
